#include <QFileInfo>
#include "proyecto.h"
#include "asistentexml.h"

Proyecto::Proyecto()
{

}

Proyecto::~Proyecto()
{

}

void Proyecto::serializar(const QString& nombreArchivo)
{
	QFileInfo fileInfo(nombreArchivo);
	nombre = fileInfo.baseName();

    AsistenteXml asistente;
	asistente.nuevo("proyecto");

	QDomElement elementoProyecto = asistente.getElementoRaiz();

    asistente.escribirAtributo(elementoProyecto, "nombre", nombre);

    foreach (Compas compas, listaCompases) {
        QDomElement elementoCompas = asistente.escribirElemento(elementoProyecto, "compas");
        compas.serializar(elementoCompas);
    }

	if (!nombreArchivo.isEmpty()) {
		this->nombreArchivo = nombreArchivo;
	}

	asistente.guardarArchivo(this->nombreArchivo);
}

void Proyecto::deserializar(const QString& nombreArchivo)
{
    AsistenteXml asistente;
	asistente.abrirArchivo(nombreArchivo);

	QDomElement elementoProyecto = asistente.getElementoRaiz();

    nombre = asistente.leerAtributo(elementoProyecto, "nombre");
	this->nombreArchivo = nombreArchivo;
    
    listaCompases.clear();
    QList<QDomElement> listaElementosCompas = asistente.leerElementos(elementoProyecto, "compas");
    foreach (QDomElement elementoCompas, listaElementosCompas) {
        Compas compas;
        compas.deserializar(elementoCompas);
        listaCompases.append(compas);
    }
}


Compas Proyecto::getCompas(int indice)
{
	if (indice < 0 || indice >= listaCompases.size()) {
		return Compas();
	} else {
		return listaCompases.at(indice);
	}
}

